﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;



//class A
//{
//public:
//	virtual void func(int val = 1) { std::cout << "A->" << val << std::endl; }
//	virtual void test() { func(); }
//};
//
//class B : public A
//{
//public:
//	void func(int val = 0) { std::cout << "B->" << val << std::endl; }
//};
//
//int main(int argc, char* argv[])
//{
//	B* p = new B;
//	p->test();
//	return 0;
//}

//A: A->0 B: B->1 C : A->1 D: B->0 E: 编译出错 F: 以上都不正确


//class Base1 { public:  int _b1; };
//class Base2 { public:  int _b2; };
//class Derive : public Base1, public Base2 { public: int _d; };
////class Derive : public Base2, public Base1 { public: int _d; };
////
//int main() {
//		Derive d;
//		Base1* p1 = &d;
//		Base2* p2 = &d;
//		Derive* p3 = &d;
//		return 0;
//	}
//A：p1 == p2 == p3 
// B：p1 < p2 < p3 
// C：p1 == p3 != p2 
// 
// 
// 
// D：p1 != p2 != p3